1. Field of Invention
The present invention generally concerns a method and apparatus for controlling data communication operations within stations of a local-area network (LAN), and more particularly to such a method and apparatus which enables the communication controller of each station to transfer data over the network communication medium, in a manner less sensitive to the interrupt latency of the processors of such stations.
2. Brief Description of the Prior Art
Local-area networks are communication systems for enabling data-processing devices, such as computer workstations, to communicate with each other through a communication (e.g. transmission) media. Data-processing devices in such networks are typically referred to as nodes or stations, and many such stations are likely to be relatively autonomous, requiring communication with other stations only occasionally. Other stations may require more frequent communication, and the amount of communication required by a particular station can vary from time to time.
In many local area networks, stations can be easily added to, removed from, and moved from place to place within the network. While there are numerous local area networks presently known, they can be classified into two general types. The first type of network is referred to as a "centralized network" which is characterized by the requirement of a centralized network controller which implements the network protocol. The second type of local area network is referred to as a "distributed network" which does not require a centralized network controller, and instead provides each station within the network with a communication controller having a medium access control (MAC) unit that locally implements the network protocol within each communication controller.
In a distributed local area network, packet switching is a technique commonly employed to dynamically allocate the communication resources of the network among multiple communicating stations. According to this technique, messages to be communicated between stations are partitioned (by the transmitting station's processor) into packets, having a fixed maximum size. The packets are then ascribed a station (i.e. source) identifier. The packets are then placed on the communication medium by the station's communication controller. Such packets are then sensed and selectively processed by the communication controller of the destination station in the network.
Any packet from one station to another station contains various fields of information specified in accordance with a predetermined network protocol. The information typically includes the identity of the source station, the identity of the destination station, and various other information concerning the characteristics of the packet. In some network protocols, a number of different types of packets may appear on the communication medium in accordance with the network protocol. Typically, these packets relate to either communication control or data-transfer functions.
To more fully appreciate the problems associated with conventional communication controllers used in the stations of distributed local-area-networks, reference is made to FIGS. 1 through 4.
In FIG. 1, a distributed local area-network 1 is shown, comprising a plurality of stations (i.e. nodes 2A through 2M) which are operably associated to a communication medium 3, such as a cable. In FIG. 2, each station is shown to generally comprise a processor (e.g., CPU) 4, a program memory 5, a system memory 6, a communication controller 7, a system bus 8, and a communication medium interface unit 9. Processor 4, program memory 5 and system memory 6 are each associated with a system bus 8, and the system bus, in turn, is interfaced with communication controller 7, as shown. Communication controller 7 is interfaced with the communication medium by way of communication medium interface unit 9. Typically, communication medium interface unit 9 is suitably adapted for the particular characteristics of the communication medium being employed in the network.
In FIG. 3, the subcomponents of a conventional communication controller 7 are shown to generally comprise a system bus interface unit 10, a command and status interface unit 11, a medium access control unit 12, and a data packet memory buffer 13. The system bus interface unit 10 interfaces system bus 8 with the command and status interface unit 11 and data packet memory buffer 13 of the communication controller. Command and status interface unit 11 interfaces system bus interface unit 10 with medium access control unit 12, as shown. Medium access control unit 12 interfaces the data packet memory buffer 13 with communication medium interface unit 9, and thus the communication medium 3, as shown.
Medium access control unit 12 comprises a microsequencer running a microprogram (i.e., an algorithm) which effectuates the network protocol and ultimately, the communication controller's access to the communication medium. To successfully carry out the network protocol, the medium access control unit in each station is communication controller must perform the same algorithm. To effectuate data transmission and data reception through the network, the network operating program of each station is operably associated with a software based low-level driver which maintains data transmit and data receive queues within the station's system memory. Processor "interrupts" provided by the communication controller are the basic scheduling events upon which the low-level driver manages the transmit and receive queues to and from the communication controller.
An important requirement of the low-level driver of each station's network operating program is that it is matched to the command and status interface unit and the memory structure of the data packet buffer. To effect data communication between two stations in the network, several critical operations must occur between the processor (CPU) and the communication controller of the transmitting station prior to putting a data packet onto the communication medium. In particular, during the transmit mode, the low-level driver must issue a transmit command to the command and status interface unit after a data packet is transferred from system memory to an assigned location in the data packet memory buffer. Also, during the receive mode, the low-level driver must issue a receive command to the command and status interface unit before a data packet is transferred from the data packet memory buffer to an assigned location in the system memory. The nature of prior art communication controllers, is such, however, that it can only work on one command of each type (i.e. transmit vs. receive) at any given time.
Communication of data packets between two stations in such distributed networks is governed by the microprogram running each station's communication controller and the network protocol. In the case of a token-passing network using, for example, the Arcnet.RTM. local area network protocol, each station is periodically given an opportunity to transmit data packets to a desired destination station within the network. Whether transmitting or receiving data packets, each communication controller will indicate to its processor the completion of each command by issuing an "interrupt" to its central processors, which are acted upon by the low-level driver of the processor's network operating system.
Prior art data communication control employed in such distributed networks has not been without serious shortcomings and drawbacks, however.
In particular, the main limitation of such communication control schemes has been that there is a dead time from when the communication controller completes a command, until the station processor services the corresponding interrupt generated by the communication controller. For example, if the communication controller has just completed reception of a data packet, the communication controller cannot receive another data packet until the processor services the corresponding interrupt generated by the communication controller. Also, if the communication controller has just completed transmission of a data packet, then, even though the communication controller has received an invitation to transmit from a receiving station, the communication controller is not capable of commencing a subsequent transmission until its station's processor services the corresponding interrupt generated by the communication controller. During such dead time, illustrated in FIG. 4 as T.sub.d, the communication controller cannot utilize the network for the same type of operation as the one just completed. This limitation of prior art data communication control results in a reduction in network throughput. In some scenarios, this limitation can translate into potentially undelivered data packets.
Thus, there is a great need in the art to provide a data communication control technique which can improve node and network data throughput, and make each communication controller less sensitive to processor interrupt response time, while avoiding the shortcomings and drawbacks of prior art data communication control techniques for distributed local area networks.
Accordingly, it is a primary object of the present invention to provide a method and apparatus for data communication control which allows consecutive transmissions and receptions of data packets to occur without host processor intervention.
It is another object of the present invention to provide such a method and apparatus for managing a page-oriented communication controller, so as to eliminate the minimum back-to-back separation between two communication events of the same type.
It is a further object of the present invention to provide such a method and apparatus in which transmit and receive commands and transmit and receive status interrupt bits are pipelined within a queue of selected depth.
A further object of the present invention is to provide such apparatus in the form of a communication controller for a local area network, in which four outstanding commands (two transmit and two receive commands) as well as their respective status interrupt bits can be buffered, and whenever the communication controller completes execution of one particular command, the communication controller immediately accesses the next command without the occurrence of a dead time between these events.
An even further object of the present invention is to provide such a communication controller allowing a simple double-buffering memory structure for data packets, while requiring minimal changes to existing low-level software drivers.
These and other objects will become apparent hereinafter and in the claims.